#include "PfamHmm5.h"

namespace {
	float initDistribDefault[] = { 0.6080327034f, 0.1959836632f, 0.1959836632f };

	// probabilities for all gap states
	float gapOpenDefault[] = { 0.01993141696f};
	float gapExtendDefault[] = { 0.7943345308f};

	float emitSingleDefault[] = {
		0.0814507614630853,	0.0549597610992167,	0.0484616621450108,	0.0674463045325945,	
		0.0102336028320195,	0.0383981027280344,	0.0680586951937790,	0.0888763046954118,
		0.0220217517832462,	0.0455966366150116,	0.0802010817849347,	0.0563113904351384,
		0.0171084555809656,	0.0362693171809743,	0.0598821438402196,	0.0707636483777755,
		0.0557156031451332,	0.0129911177224466,	0.0302896828248002,	0.0549204949891299,
		8.28409549806786e-07,	9.29761982088506e-08,	4.25596453242495e-05
	};

	float emitPairsDefault[] = {
		0.0234095729752092,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00735247776977972,0.0144004095160725,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00489037736921832,0.00423038340890654,0.00786420004717877,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00664890372797939,0.00485626128092536,0.00712034452981537,0.0160647388897916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00253142645860317,0.000630550920251424,0.000572644161556115,0.000504939461615277,0.00517878613870646,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00554670401826389,0.00560628552225879,0.00324257369697991,0.00435391874504901,0.000394011846106087,0.00536606259237683,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00921975774502543,0.00731230793463467,0.00489148737805710,0.0114198294646652,0.000537152240664384,0.00697721539661929,0.0150074803570721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.0127358624226839,0.00476967266683807,0.00572581111830616,0.00646074110242295,0.00110557366944741,0.00343604000705313,0.00552319988696684,0.0326384034853650,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00257145573526425,0.00272453073673548,0.00223756927523941,0.00218331675906897,0.000344442388268001,0.00196277090470936,0.00238999459343112,0.00202833803126640,0.00539108075126085,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00828177691935537,0.00294782714405932,0.00175146715300091,0.00178049574712584,0.00129233654938902,0.00200228188065013,0.00270484128761761,0.00280472122873349,0.00119269115047141,0.0146968406853633,0,0,0,0,0,0,0,0,0,0,0,0,0
		,0.0135644909722927,0.00553403679314877,0.00304781719627245,0.00326429227673432,0.00206137024820325,0.00389621416356380,0.00475043992852123,0.00503496158163618,0.00226133561553820,0.0238423885559030,0.0357254376108981,0,0,0,0,0,0,0,0,0,0,0,0
		,0.00685210152335814,0.0108295490366729,0.00444639343681759,0.00538874353199873,0.000501733171054156,0.00533697449377006,0.00807097603613013,0.00476306461071241,0.00211645429779864,0.00260170236388775,0.00456255202459121,0.00985342055503618,0,0,0,0,0,0,0,0,0,0,0
		,0.00323985317431492,0.00143179531267731,0.000890635973471922,0.000874589505516697,0.000460669795477387,0.00119660927034798,0.00130010925281460,0.00138414723787429,0.000600532577513856,0.00415669419863688,0.00825669564123128,0.00124067261720772,0.00312668357452039,0,0,0,0,0,0,0,0,0,0
		,0.00470371584153666,0.00195079076171865,0.00139928890403558,0.00136134242326801,0.000849100315827851,0.00131240179433496,0.00168044924907247,0.00240749669672478,0.00135324897956299,0.00657664846449871,0.0131415386765511,0.00155107454904753,0.00243582500095480,0.0114152697252005,0,0,0,0,0,0,0,0,0
		,0.00604655334415704,0.00313747237661186,0.00231318709806062,0.00369175843231665,0.000441681192371072,0.00219793692683919,0.00399809487336693,0.00392563801759964,0.00117945043005820,0.00223220539109499,0.00381332970347096,0.00327729887203674,0.000829545307910764,0.00147888337801106,0.0146128064540910,0,0,0,0,0,0,0,0
		,0.0131755039182020,0.00587961157395083,0.00617072334842940,0.00698478164173755,0.00137874234012673,0.00440710254404213,0.00694575504340128,0.00895144605816160,0.00235131779246940,0.00355439789715899,0.00587461097300978,0.00576511813846455,0.00168313682182579,0.00257164564910115,0.00469089832589615,0.0115383751831705,0,0,0,0,0,0,0
		,0.00925435112043557,0.00493631927813087,0.00437543211775857,0.00482036158749804,0.00110731222913291,0.00360622477151954,0.00566813834569247,0.00505186029836166,0.00179467380215717,0.00482135620213139,0.00693531756800515,0.00482939194873368,0.00185899564449966,0.00262476382632925,0.00335950973583400,0.0103197569011462,0.0106980619275427,0,0,0,0,0,0
		,0.00133560464943541,0.000889031020812241,0.000475431355906558,0.000502942724773771,0.000202584954827474,0.000487530229802619,0.000637687982342965,0.000777486254847721,0.000474484845363669,0.00124165346795392,0.00254619260699473,0.000603071945179231,0.000521167084570118,0.00212852286333713,0.000500517500051362,0.000817910791419705,0.000754134082426024,0.00399275545835523,0,0,0,0,0
		,0.00346467389738381,0.00237826776157571,0.00165935949822311,0.00157678924403904,0.000583505536870764,0.00150025480194502,0.00195596348076370,0.00193855466603854,0.00199864932667471,0.00303343866118782,0.00565651953949685,0.00183039331378902,0.00124255632333957,0.00671753603049693,0.00121007660829717,0.00239027598845739,0.00220146646020469,0.00194307575539579,0.00851463936728057,0,0,0,0
		,0.0128113862617908,0.00383406312257511,0.00232641043982844,0.00254731610166234,0.00187507714780400,0.00268051618911202,0.00392526959031722,0.00405041683057753,0.00154490040294013,0.0208760346636174,0.0214719890107879,0.00340999164207000,0.00385417188364912,0.00643747457196576,0.00313739340804718,0.00512673139554747,0.00715269439161936,0.00129592238956561,0.00345168440266845,0.0178568298081553,0,0,0
		,6.79852607921236e-08,6.17289484492901e-08,2.07153453129374e-07,3.01276196598224e-07,5.28310820061492e-09,5.58897235959789e-08,1.14421001292265e-07,6.60388525076865e-08,3.69817574043044e-08,2.07153453129375e-08,4.96334112531454e-08,2.42744918901938e-07,3.01693284087747e-08,1.79347620494559e-08,8.38345853939683e-08,2.01453257439237e-07,8.14710896200090e-08,5.70019569013715e-09,1.91860245180226e-08,3.86501073623934e-08,4.17087489522231e-10,0,0
		,3.90671948519156e-08,2.85009784506857e-08,3.82330198728711e-08,4.15697197890490e-08,1.66834995808892e-09,5.03285570690158e-08,7.78563313774830e-08,1.83518495389781e-08,1.55712662754966e-08,9.87107058535946e-09,3.75378740570007e-08,3.83720490360452e-08,5.83922485331123e-09,1.69615579072374e-08,2.00201994970671e-08,3.07254450614710e-08,4.57405946842713e-08,1.25126246856669e-09,5.56116652696307e-09,2.76668034716413e-08,1.39029163174077e-10,0,0
		,4.55403926893006e-06,4.33075843287249e-06,3.21922027329575e-06,3.23423542291855e-06,2.33972178705654e-06,2.97772661686238e-06,3.60627746357238e-06,4.30642832931703e-06,2.06819783137757e-06,3.19878298630916e-06,5.95739964200919e-06,4.66025754959506e-06,1.56658061064550e-06,2.56133427315602e-06,2.54840456098083e-06,5.67141665336012e-06,3.09562334723399e-06,1.11431874284023e-06,1.66876704557844e-06,3.94300609677999e-06,3.19767075300377e-09,1.39029163174077e-10,8.21662354358794e-08
	};
	
}
	
PfamHmm5::PfamHmm5() 
	: PairHmm(1, 2, gapOpenDefault, gapExtendDefault, initDistribDefault, emitSingleDefault, emitPairsDefault, "ARNDCQEGHILKMFPSTWYVBZX") 
{
}

PfamHmm5::PfamHmm5(const float *gapOpen, const float *gapExtend) 
	: PairHmm(1, 2, gapOpen, gapExtend, initDistribDefault, emitSingleDefault, emitPairsDefault, "ARNDCQEGHILKMFPSTWYVBZX") 
{
}
